package com.work.cos.mapper.base;

import com.work.cos.domain.entity.UserEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * Created by silence on 2018/4/8.
 */
public interface IUserMapper  extends BaseMapper<UserEntity, Long>{

    /********
     *
     * 用户信息检索
     *
     * ****/
    List<UserEntity> findAll(UserEntity userInfo);

    /********
     *
     * 用户信息检索
     *
     * ****/
    List<UserEntity> findUserPage(UserEntity userInfo);


    /**
     *
     * @param map
     * @return
     */
    List<UserEntity> findUserDyn(Map<String,Object> map);

    /**
     * 用户信息检索
     * @param phoneNum
     * @param password
     * @return
     */
    UserEntity findLoginUsers(@Param("phone")String phoneNum,@Param("password")String password);

    /********
     *
     * 上述检索的条件数目
     *
     * ****/
    int getUserPageCount(UserEntity userInfo);

    /**
     * 获取用户数量（电话）
     * @param phoneNum
     * @return
     */
    int getCountByMobile(@Param("phoneNum")String phoneNum);

    int getCount(UserEntity userInfo);

    int countDyn(Map<String,Object> map);

    /**
     * 检索图片信息
     * @param userId
     * @return
     */
    String findUserImageHeadUrl(@Param("userId")String userId);

    /**
     * 更新图片信息
     * @param userId
     * @param newPath
     * @return
     */
    int updateUserImageHeadUrl(@Param("userId")String userId,@Param("avator") String avator);

    /**
     * 更改密码
     * @param phoneNum
     * @param password
     * @return
     */
    int updateUserPwd(@Param("phoneNum")String phoneNum,@Param("password")String password);

    /**
     * 更改头像
     * @param phoneNum
     * @param password
     * @return
     */
    int updateAvator(@Param("userId")String userId,@Param("avator")String avator);

    /**
     * 检索用户信息(userId)
     * @param userId
     * @return
     */
    UserEntity findUsersByUserId(@Param("userId")String userId);

    /**
     * 用户统计
     * @param startTime
     * @param endTime
     * @param pageNo
     * @param pageSize
     * @return
     */
    List<UserEntity> findUserStatisticsList(@Param("startTime")String startTime,@Param("endTime")String endTime,
                                            @Param("pageNo")int pageNo, @Param("pageSize")int pageSize);

    /**
     * 用户统计数量
     * @param startTime
     * @param endTime
     * @param areaCode
     * @return
     */
    int findCountUserStatistics(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("areaCode")String areaCode);

    /***
     * 旧版本用户信息全局检索
     * @param phoneNum
     * @return
     */
    UserEntity findOldMemberInfo(@Param("phone")String phoneNum);

    /**
     * 查找所有用户
     */
    List<UserEntity> findAllUserInfo();

    /**
     * user Validity  times
     * @param userId
     * @return
     */
    String getUserValidityTimes(@Param("userId")String userId);

    /**
     * user Validity  times
     * @param userId
     * @return
     */
    int updateLotteryTime(@Param("userId")String userId);

    /**
     * user Validity  times
     * @param userId
     * @return
     */
    int updateLotteryRevertTimes(@Param("userId")String userId,@Param("lotteryTimes")int lotteryTimes);

    /**
     *
     * @param userId
     * @return
     */
    UserEntity getUserLottoryInfo(@Param("userId")String userId);

    UserEntity findUserByPhone(@Param("searchMobilePhone")String searchMobilePhone);
    
    
    int getMemberMobileIsExist(@Param("phone")Long phone);
    
    /**
     * 
     * @param phone
     * @param password
     * @return
     */
    UserEntity findUsers(@Param("phone")Long phone, @Param("password")String password);
}
